As more and more services are becoming available for small or mobile devices, the number of applications running in a single device has increased significantly. Usually, a small or mobile device is used mostly for certain specific applications, while being equipped with general purpose computing capabilities. For example, it is common to find a mobile phone device that also runs a browser application, a gaming application, and a media player application, etc. On the other hand, a mobile video player device may run a gaming application and/or an email application in addition to a video application. Normally, multiple applications or processes in the same device compete with each other by sharing the same memory resources embedded inside the device.
These applications or processes consume resources of the device, such as central process units (CPUs), memory, input/output, etc. These consumed resources can compete for the resources needed for the user application work and can result in user interface glitches, the device feeling sluggish, slow to respond to touches, and/or the device locking up if there are insufficient resources available to be applied to the user application process. Typically, when an application or process is launched, a fixed set of resources may be applied to the application or process in which the application or process cannot consume more than the assigned fixed set of resources during the execution. Such a mechanism may not be sufficiently flexible under certain circumstances. For example, an application such as photo editing software may temporarily require a large amount of memory to edit an album. If such a large amount of memory exceeds the ordinary memory usage associated with the application, the application may not be able to acquire it, even though the memory resources are widely available in a data processing system.